package tech.xs.workflow.service;

import tech.xs.common.framework.service.CrudService;
import tech.xs.workflow.domain.entity.BpmnEvent;
import tech.xs.workflow.domain.entity.BpmnNode;
import tech.xs.workflow.domain.entity.WorkflowWork;

public interface WorkflowWorkService extends CrudService<WorkflowWork> {

    /**
     * 开始工作流
     *
     * @param code 流程编码
     * @return 流程信息
     */
    WorkflowWork startWorkflow(String code);

    /**
     * 执行当前节点
     *
     * @param work 流程实例
     * @param node 流程节点
     * @return 当前节点执行完毕, 还需要执行下一个节点, 则返回true, 否则返回false
     */
    boolean executeNode(WorkflowWork work, BpmnNode node);

    /**
     * 执行下一个节点
     *
     * @param work 流程实例
     * @param node 当前节点
     * @return 如果还需要继续执行, 则返回true, 否则返回false
     */
    boolean executeNextNode(WorkflowWork work, BpmnNode node);

}
